#pragma once
#include <wx/aui/aui.h>
#include <wx/xrc/xmlres.h>

class wxCollapsiblePaneEvent;
class wxOgre;

namespace he
{
	class MapRenderer;
	class ControlPanel;

	//! Main frame implementation
	class MainFrame : public wxFrame
	{
		// Constants
	private:
		//! Scroll offset.
		static unsigned char const SCROLL_OFFSET = 15;

		// Enums
	private:
		enum
		{
			ID_Quit = 1,
			ID_About,
		};

		// Attributes
	private:
		//! AUI manager.
		wxAuiManager m_Manager;
		//! wxOgre instance.
		wxOgre *m_pOgre;
		//! Control panel.
		ControlPanel *m_pControlPanel;

		// Signal handlers
	private:
		//! Quit command handler.
		void on_quit(wxCommandEvent& Event);
		//! On wireframe on/off.
		void on_wireframe(wxCommandEvent& Event);
		//! On noise on/off.
		void on_noise(wxCommandEvent& Event);
		//! On collapse event.
		void on_collapse_event(wxCollapsiblePaneEvent& Event);
		//! On map export.
		void OnMapExport(wxCommandEvent &Event);

		// Constructor
	public:
		MainFrame();
		~MainFrame();

		// Events
	private:
		DECLARE_EVENT_TABLE()
	};
}